package com.example.datapedestal.codeGenerator;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author: ThinkPad
 * @since: 2023/10/26 15:15
 * @description:
 */
//代码自动生成器
public class CodeGeneration {
    public static void main(String[] args) {
//        需要构建一个代码自动生成器 对象
        AutoGenerator mpg=new AutoGenerator();
//        配置策略
//        1、全局配置
        GlobalConfig gc = new GlobalConfig();
//        获取用户的目录
        String projectPath=System.getProperty("user.dir");
//        设置代码生成目录
        gc.setOutputDir(projectPath+"/src/main/java");
//        设置作者名字
        gc.setAuthor("hcy");
//        是否打开资源管理器
        gc.setOpen(false);
//        是否覆盖原来生成的
        gc.setFileOverride(true);
        gc.setServiceImplName("%sService");
        gc.setServiceImplName("%sServiceImpl");
//        设置时间格式
        gc.setDateType(DateType.ONLY_DATE);
//        设置自动配置swagger
//        gc.setSwagger2(true);
//        把全局配置添加到生成器中
        mpg.setGlobalConfig(gc);
//        2、设置数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
//        设置连接路径
        dsc.setUrl("jdbc:mysql://222.71.209.242:3306/datasync?allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true&useAffectedRows=true");
//        设置连接驱动名字
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
//        设置数据库用户名
        dsc.setUsername("root");
//        设置数据库密码
        dsc.setPassword("overseas");
//        设置数据库类型
        dsc.setDbType(DbType.MYSQL);
//        把数据源配置添加到生成器中
        mpg.setDataSource(dsc);
//        3、包的配置
        PackageConfig pc = new PackageConfig();
//        设置存放位置
        pc.setParent("com.example.dataPedestal");
//        设置模块名
        pc.setModuleName("dataAllocation");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);
//        4、策略配置
        StrategyConfig strategy = new StrategyConfig();
//        设置需要映射自动生成的表
        strategy.setInclude("t_db_config");
//        设置行自动转驼峰命名
        strategy.setNaming(NamingStrategy.underline_to_camel);
//        设置列自动转驼峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        是否使用lombok注解
        strategy.setEntityLombokModel(true);
//        逻辑删除设置
        strategy.setLogicDeleteFieldName("deleted");
        strategy.setTablePrefix("t_");
//        开头驼峰命名格式
        strategy.setRestControllerStyle(true);
//        设置了这个驼峰命名就会改为 hello_id_2
        strategy.setControllerMappingHyphenStyle(true);
//        把策略配置添加到生成器中
        mpg.setStrategy(strategy);
//        执行生成器
        mpg.execute();
    }

}
